package com.se.dao.redis;

import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.se.domain.dto.wx.WxAccessTokenDTO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Repository;

import java.util.concurrent.TimeUnit;

@Repository
@Slf4j
public class WxOpenRedisDao {
	@Autowired
	private StringRedisTemplate redisTemplate;
	private String accessTokenKey = "access_token";
	
	public void storeAccessToken(WxAccessTokenDTO accessTokenDTO) {
		redisTemplate.opsForValue().set(this.accessTokenKey, JSONUtil.toJsonStr(accessTokenDTO), accessTokenDTO.getExpiresIn() - 60 * 5, TimeUnit.SECONDS);
	}
	
	public WxAccessTokenDTO getAccessToken() {
		String s = redisTemplate.opsForValue().get(this.accessTokenKey);
		if(s == null){
			return null;
		}else {
			JSONObject jsonObject = JSONUtil.parseObj(s);
			WxAccessTokenDTO wxAccessTokenDTO = new WxAccessTokenDTO();
			wxAccessTokenDTO.setAccessToken(jsonObject.getStr("accessToken"));
			wxAccessTokenDTO.setExpiresIn(jsonObject.getLong("expiresIn"));
			wxAccessTokenDTO.setExpiresTime(jsonObject.getLong("expiresTime"));
			
//			用不了
//			JSONUtil.toBean(s, WxAccessTokenDTO.class);
			return wxAccessTokenDTO;
		}
	}
}
